#define _CRT_SECURE_NO_WARNINGS 1

//class Solution {
//public:
//    int longestPalindromeSubseq(string s) {
//        int n = s.size();
//        vector<vector<int>> dp(n, vector<int>(n));
//        for (int i = n - 1; i >= 0; i--)
//        {
//            for (int j = 0; j < n; j++)
//            {
//                if (i > j)
//                    dp[i][j] = 0;
//                else if (i == j)dp[i][j] = 1;
//                else
//                {
//                    if (s[i] == s[j])dp[i][j] = dp[i + 1][j - 1] + 2;
//                    else {
//                        dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);
//                    }
//                }
//            }
//        }
//        return dp[0][n - 1];
//    }
//};